import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
var car = JSON.parse(sessionStorage.getItem("car") || "[]");//获取本地储存的car
const store = new Vuex.Store({
    // 获取state里面的东西   this.$store.state.var
    // 获取mutations 方法    this.$store.commit('function',"按需唯一参数")
    // 获取getters 中的数据  this.$store.getters.function
    state: {
        car: car//其中保存着商品的id 价格 数量 是否购买选中四个参数
    },
    mutations: {
        //点击加入购物车将购物车的信息保存到store中的car上
        addToCar(state, goodsdata) {
            var flag = false;
            state.car.some((item) => {
                if (item.id == goodsdata.id) {
                    item.count += parseInt(goodsdata.count);
                    flag = true;
                    return true;
                }
            });
            if (!flag) {
                state.car.push(goodsdata);
            }
            sessionStorage.setItem("car", JSON.stringify(state.car));
        },
        //更新
        undataGoodsInfo(state, goodsdata) {
            state.car.some(item => {
                if (item.id == goodsdata.id) {
                    item.count = parseInt(goodsdata.count);
                    return true;
                }
            })
            sessionStorage.setItem("car", JSON.stringify(state.car));
        },
        //删除键的作用
        removeFromCar(state, id) {
            state.car.some((item, index) => {
                if (item.id == id) {
                    state.car.splice(index, 1);
                    return true;
                }
            });
            sessionStorage.setItem("car", JSON.stringify(state.car));
        },
        //选中开关
        dateSelected(state, info) {
            state.car.some(item => {
                if (item.id == info.id) {
                    item.selected = info.selected;
                    return true;
                }
            });
            sessionStorage.setItem("car", JSON.stringify(state.car));
        }
    },
    getters: {
        //获取所有商品购买的数量
        getAllCount(state) {
            var c = 0;
            state.car.forEach(item => {
                c += item.count;
            });
            return c;
        },
        //获取添加后商品的数量
        getGoodsCount(state) {
            var o = {};
            state.car.forEach(item => {
                o[item.id] = item.count;
            });
            return o;
        },
        //获取选中状态
        getGoodsSelected(state) {
            var o = {};
            state.car.forEach(item => {
                o[item.id] = item.selected;
            })
            return o;
        },
        //计算商品总数量和价格
        addAmountAndPrice(state) {
            var o = {
                count: 0,
                price: 0
            };
            state.car.forEach(item => {
                if (item.selected) {
                    o.count += item.count;
                    o.price += item.price * item.count;
                }
            });
            return o;
        }
    }
});
export default store;